from config.log_config import AntLogger
from das.DataDictionaryDas import DataDictionaryDas

class DataDictionaryService:
    """数据字典服务类，处理业务逻辑"""
    
    def __init__(self):
        self.das = DataDictionaryDas()
    
    def getAllDictionaryEntries(self):
        """获取所有字典数据"""
        AntLogger.info('开始获取所有字典数据')
        try:
            result = self.das.get_all_entries()
            AntLogger.info(f'获取所有字典数据成功，共{len(result)}条')
            return result
        except Exception as e:
            AntLogger.error(f'获取所有字典数据异常: {str(e)}')
            return []
    
    def getDictionaryByKey(self, key):
        """根据键获取字典数据"""
        AntLogger.info(f'开始获取键为{key}的字典数据')
        try:
            result = self.das.get_by_key(key)
            if result:
                AntLogger.info(f'获取键为{key}的字典数据成功')
            else:
                AntLogger.warning(f'未找到键为{key}的字典数据')
            return result
        except Exception as e:
            AntLogger.error(f'获取键为{key}的字典数据异常: {str(e)}')
            return None
    
    def createDictionaryEntry(self, dict_key, dict_value, dict_desc=None):
        """创建字典数据"""
        AntLogger.info(f'开始创建字典数据，键={dict_key}')
        try:
            # 验证键是否已存在
            existing = self.das.get_by_key(dict_key)
            if existing:
                AntLogger.warning(f'键{dict_key}已存在，无法创建')
                return False, '键已存在'
            
            # 创建新记录
            result = self.das.create_entry(dict_key, dict_value, dict_desc)
            if result:
                AntLogger.info(f'创建字典数据成功，键={dict_key}')
                return True, '创建成功'
            else:
                AntLogger.error(f'创建字典数据失败，键={dict_key}')
                return False, '创建失败'
        except Exception as e:
            AntLogger.error(f'创建字典数据异常: {str(e)}')
            return False, f'创建异常: {str(e)}'
    
    def updateDictionaryEntry(self, dict_key, dict_value=None, dict_desc=None):
        """更新字典数据"""
        AntLogger.info(f'开始更新字典数据，键={dict_key}')
        try:
            # 验证键是否存在
            existing = self.das.get_by_key(dict_key)
            if not existing:
                AntLogger.warning(f'键{dict_key}不存在，无法更新')
                return False, '键不存在'
            
            # 更新记录
            result = self.das.update_entry(dict_key, dict_value, dict_desc)
            if result:
                AntLogger.info(f'更新字典数据成功，键={dict_key}')
                return True, '更新成功'
            else:
                AntLogger.error(f'更新字典数据失败，键={dict_key}')
                return False, '更新失败'
        except Exception as e:
            AntLogger.error(f'更新字典数据异常: {str(e)}')
            return False, f'更新异常: {str(e)}'
    
    def deleteDictionaryEntry(self, dict_key):
        """删除字典数据"""
        AntLogger.warning(f'准备删除键为{dict_key}的字典数据')
        try:
            # 验证键是否存在
            existing = self.das.get_by_key(dict_key)
            if not existing:
                AntLogger.warning(f'键{dict_key}不存在，无法删除')
                return False, '键不存在'
            
            # 删除记录
            result = self.das.delete_entry(dict_key)
            if result:
                AntLogger.info(f'删除字典数据成功，键={dict_key}')
                return True, '删除成功'
            else:
                AntLogger.error(f'删除字典数据失败，键={dict_key}')
                return False, '删除失败'
        except Exception as e:
            AntLogger.error(f'删除字典数据异常: {str(e)}')
            return False, f'删除异常: {str(e)}'